The _Universal_ QML style has a theme that uses the colour scheme from
the system. This can be set by either configuring
`qtquickcontrols2.conf` or setting the environment variable
`QT_QUICK_CONTROLS_UNIVERSAL_THEME=System`.
Unfortunately, due to [QTBUG-128825], setting the theme in the
configuration file/environment variable results in the dark/light mode
setting only be set during startup, not during runtime. Not ideal, but
still better than not having a broken dark mode theme at all.
Fixes #7991
[QTBUG-128825]: https://bugreports.qt.io/browse/QTBUG-128825
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
if (QOperatingSystemVersion::current().version() < QOperatingSystemVersion::Windows11.version()) {
qmlStyle = QStringLiteral("Universal");
widgetsStyle = QStringLiteral("Fusion");
+ if (qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_UNIVERSAL_THEME")) {
+ // initialise theme with the light/dark mode setting from the OS
+ qputenv("QT_QUICK_CONTROLS_UNIVERSAL_THEME", "System");
+ }
} else {
qmlStyle = QStringLiteral("FluentWinUI3");
widgetsStyle = QStringLiteral("windows11");